import * as db from '@/api/common.js'
export const request = (params) => {
	if (params.url.indexOf('/qrcode/status') == -1 &&
		params.url.indexOf('order/tip') == -1) {
		uni.showLoading({
			title: "加载中"
		})
	}
	return new Promise((resolve, reject) => {
		wx.request({
			...params,
			success(res) {
				//如果是login 接口 需要将token塞到cookie中
				var jsondata = res.data;
				if (res.statusCode === 200) {
					if (jsondata.status === 200) {
						// if (params.url.indexOf('/v1/login') !== -1) {
						// 	db.set('token', jsondata.data.token)
						// }
						uni.hideLoading();
						resolve(jsondata);
					} else {
						if (params.url.indexOf('/pay/login.do') == -1) {
							uni.showToast({
								title: jsondata.message,
								icon: 'none',
								duration: 4000
							});
						}else{
							uni.hideLoading();
						}
						reject(res.data)
					}
				} else {
					showError(res)
					//resolve(jsondata);
					//应该是这个但它会抛异常统一处理后就不执行then事件了
					reject(res.data)
				}
				// if (jsondata.status === 200) {
				// 	uni.hideLoading();
				// 	resolve(jsondata);
				// } else {
				// 	showError(res)
				// 	resolve(jsondata);
				// 	//应该是这个但它会抛异常统一处理后就不执行then事件了
				// 	// reject(res.data)
				// }
			},
			fail(err) {
				showError(err)
				reject(res.data)
			},
			complete() {
				//uni.hideLoading();
			}
		})
	})
}

//错误处理
const showError = (error) => {
	let that = this
	console.log(error)
	if (error) {
		let data = error.data
		let token = db.get('token')
		console.log("------异常响应------", token)
		console.log("------异常响应------", error.status)
		uni.hideLoading();
		switch (error.statusCode) {
			case 403:
				uni.showToast({
					title: '拒绝访问',
					icon: 'none',
					duration: 4000
				});
				break
			case 500:
				uni.showToast({
					title: '服务器异常',
					icon: 'none',
					duration: 4000
				});
				break
			case 404:
				uni.showToast({
					title: '很抱歉，资源未找到!',
					icon: 'none',
					duration: 4000
				});
				break
			case 504:
				uni.showToast({
					title: '网络超时',
					icon: 'none',
					duration: 2000
				});
				break
			case 502:
				uni.showToast({
					title: '服务器异常',
					icon: 'none',
					duration: 2000
				});
				break
			case 401:
				// uni.showToast({
				// 	title: '未授权，请重新登录',
				// 	icon: 'none',
				// 	duration: 2000
				// });
				// setTimeout(() => {
				// 	//去我的页面登录
				// 	uni.redirectTo({
				// 		url: '/pages/login/index'
				// 	});
				// }, 2000)
				break
			default:
				uni.showToast({
					title: data.message,
					icon: 'none',
					duration: 4000
				});
				break
		}
	}
	return null
};
